//Kéki
package digitrencer;

/**
 * A vezetéket megvalósító osztály.
 * @author Kéki
 */
public class Wire {

    private boolean startValue;
    private boolean endValue;
    private boolean hasInput;
    /**
     * A vezeték egyedi azonosítója. A konzolra való kiíratáshoz szükséges.
     */
    public int id;

    Wire(int id){
        this.id=id;
        System.out.println("CREATE | #"+id+":Wire | Wire(int id = "+id+")");
    }

    /**
     * A vezeték elején lévő értéket átviszi a végére.
     * @return Megadja, hogy a vezeték végén lévő érték változott-e.
     */
    public boolean refresh() {
        System.out.println("CALL | #"+id+":Wire | public boolean refresh()");
        System.out.println("RETURN | #"+id+":Wire | boolean changed = " + (endValue != startValue));
        if (endValue == startValue) return false;
        endValue = startValue;
        return true;
    }

    /**
     * Lekérdezi a vezeték végén lévő értéket.
     * @return A vezeték végén lévő érték.
     */
    public boolean getEnd() {
        System.out.println("CALL | #"+id+":Wire | public boolean getEnd()");
        System.out.println("RETURN | #"+id+":Wire | boolean val = "+endValue);
        return endValue;
    }

    /**
     * Beállítja a vezeték elején lévő értéket.
     * @param val A beállítandó érték.
     */
    public void setStart(boolean val) {
        System.out.println("CALL | #"+id+":Wire | public void setStart("+val+")");
        startValue = val;
    }

    /**
     * Lekérdezi, hogy az adott vezetéket meghajtja-e már egy alkatrész.
     * @return Igaz, ha a vezetéket már meghajtja egy alkatrész.
     */
    public boolean getHasInput() {
        System.out.println("CALL | #"+id+":Wire | public boolean getHasInput()");
        System.out.println("RETURN | #"+id+":Wire | boolean hasInput = "+hasInput);
        return hasInput;
    }

    /**
     * Beállítja, hogy az adott vezetéket meghajtja-e már egy alkatrész.
     * @param hasInput A beállítani kívánt érték.
     */
    public void setHasInput(boolean hasInput) {
        System.out.println("CALL | #"+id+":Wire | public void setHasInput("+hasInput+")");
        this.hasInput=hasInput;
    }
}
